package com.yuliang.ai.service.Impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.yuliang.ai.domain.Dto.AiConfigDto;
import com.yuliang.ai.domain.Vo.AiConfigVo;
import com.yuliang.ai.domain.entity.AiConfig;
import com.yuliang.ai.mapper.AiConfigMapper;
import com.yuliang.ai.service.AiConfigService;
import com.yuliang.utils.result.ResultUtils;
import com.yuliang.utils.result.emums.HttpCodeEnum;
import com.yuliang.utils.superbackage.SuperServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.dozer.DozerBeanMapper;
import org.dozer.Mapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


/**
 * @author Huangkai
 */
@Slf4j
@Service
public class AiConfigServiceImpl extends SuperServiceImpl<AiConfigMapper, AiConfig> implements AiConfigService {

    @Autowired
    AiConfigService aiConfigService;

    @Override
    public AiConfigDto selectAiConfig(AiConfigVo aiConfigVo) {
        LambdaQueryWrapper<AiConfig> wrapper = new QueryWrapper<AiConfig>().lambda();
        wrapper.eq(AiConfig::getConfigKey, aiConfigVo.getConfigKey());
        AiConfig aiConfig = aiConfigService.getOne(wrapper);
        log.info("查询的结果{}", aiConfig);
        if(aiConfig == null){
            return null;
        }
        Mapper mapper = new DozerBeanMapper();
        AiConfigDto aiConfigDto = mapper.map(aiConfig, AiConfigDto.class);
        return aiConfigDto;
    }

    @Override
    public String updateAiConfig(AiConfigVo aiConfigVo) {
        AiConfigDto aiConfigDto = aiConfigService.selectAiConfig(aiConfigVo);
        if(aiConfigDto == null){
            return ResultUtils.ResultWithMessageEnum(HttpCodeEnum.data_not_exist);
        }
        LambdaUpdateWrapper<AiConfig> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
        lambdaUpdateWrapper.eq(AiConfig:: getConfigKey, aiConfigVo.getConfigKey());
        Mapper mapper = new DozerBeanMapper();
        AiConfig aiConfig = mapper.map(aiConfigVo, AiConfig.class);
        aiConfig.update(lambdaUpdateWrapper);
        return ResultUtils.ResultWithMessageEnum(HttpCodeEnum.operation_success);
    }
}
